﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Wedn.DAL;
using Wedn.Model.Data;

namespace Wedn.BLL.Data
{
    /// <summary>
    /// 文章管理抽象类不可被实例化(初步审核通过)
    /// </summary>
    public class PostsManager
    {
        #region 增加文章
        /// <summary>
        /// 向文章表中插入一行数据, 返回执行是否成功
        /// </summary>
        /// <param name="post">要插入的对象</param>
        /// <returns>执行是否成功</returns>
        public static bool Insert(Post post)
        {
            return PostsDAO.Insert(post) > 0 ? true : false;
        }
        #endregion

        #region 删除文章

        #region 删除一条数据
        /// <summary>
        /// 根据id删除对应的文章记录(包括旗下所有评论),返回执行是否成功
        /// </summary>
        /// <param name="postid">要删除记录的ID</param>
        /// <returns>执行是否成功</returns>
        public static bool Delete(int postid)
        {
            return PostsDAO.Delete(postid) > 0 ? true : false;
        }
        #endregion

        #region 删除多条数据
        /// <summary>
        /// 根据id数组删除对应的文章记录(包括旗下所有评论),返回执行是否成功
        /// </summary>
        /// <param name="postid">要删除记录的ID数组</param>
        /// <returns>执行是否成功</returns>
        public static bool Delete(int[] postids)
        {
            string ids = string.Join(",", postids);
            return PostsDAO.Delete(ids) == postids.Length ? true : false;
        }
        #endregion

        #endregion

        #region 更新文章
        /// <summary>
        /// 根据用户对象的ID属性更新用户信息, 返回执行是否成功
        /// </summary>
        /// <param name="post">要更新的用户对象</param>
        /// <returns>执行是否成功</returns>
        public static bool Update(Post post)
        {
            return PostsDAO.Update(post) > 0 ? true : false;
        }
        #endregion

        #region 选取文章

        #region 获取表中主键最大值
        /// <summary>
        /// 获取表中主键最大值
        /// </summary>
        /// <returns>主键最大值</returns>
        public static int GetMaxId()
        {
            return PostsDAO.GetMaxId();
        }
        #endregion

        #region 获取所有文章信息集合
        /// <summary>
        /// 获取文章信息表中所有文章信息, 返回对象集合
        /// </summary>
        /// <returns>所有文章信息集合</returns>
        public static List<Post> GetPosts()
        {
            return PostsDAO.SelectPosts();
        }
        #endregion

        #region 根据指定字段和是否降序排序从文章信息表中获取指定条数文章信息, 返回对象集合
        /// <summary>
        /// 根据指定字段和是否降序排序从文章信息表中获取指定条数文章信息, 返回对象集合
        /// </summary>
        /// <param name="pageSize">文章数目</param>
        /// <param name="orderField">排序字段</param>
        /// <param name="isDescending">是否降序</param>
        /// <returns>符合条件文章信息集合</returns>
        public static List<Post> GetPosts(int pageSize, string orderField, bool isDescending)
        {
            return PostsDAO.SelectPosts(pageSize, orderField, isDescending);
        }
        #endregion

        #region 选择多条文章
        /// <summary>
        /// 根据ID数据批量获取文章信息集合, 返回对象集合
        /// </summary>
        /// <param name="postids">ID数组</param>
        /// <returns>多条文章信息集合</returns>
        public static List<Post> GetPosts(int[] postids)
        {
            string ids = string.Join(",", postids);
            return PostsDAO.SelectPosts(ids);
        }
        #endregion

        #region 选择一条数据
        /// <summary>
        /// 根据文章ID获取文章信息对象, 返回文章对象
        /// </summary>
        /// <param name="postid">文章ID</param>
        /// <returns>文章对象</returns>
        public static Post GetPost(int postid)
        {
            return PostsDAO.SelectPost(postid);
        }

        #endregion

        #region 选取文章总数
        /// <summary>
        /// 选取文章总数
        /// </summary>
        /// <returns>总数</returns>
        public static int GetPostsCount()
        {
            return PostsDAO.SelectPostsCount();
        }
        #endregion

        #endregion
    }
}
